1. Field of the Invention
The present invention relates, generally, to content delivery networks and, in preferred embodiments, to systems and methods for intelligent caching and refreshing of dynamically generated and static Web content to improve content delivery services.
2. Description of the Related Art
Web performance is a key point of differentiation among content providers. Crashes and slowdowns within major Web sites demonstrate the difficulties companies face in trying to deal with high Web traffic. As Internet backbone technologies have developed, many innovations in the area of service management have improved bandwidth and Web content retrieval response time. These improvements to infrastructure, however, cannot solve traffic problems at all points within the Internet.
For example, assume in FIG. 1 that an end user 12 in a network 14 in Japan requests access to a page from a Web site 16 in a network 18 in the United States. The request must pass through several gateways 20, 22, and 24 before reaching Web site 16. Although Web site 16 may have large bandwidth (the ability to rapidly communicate large quantities of data), the gateways connecting the network 14 in Japan to the network 18 in the United States may be slow, and thus, when end user 12 attempts to access the page from Web site 16, the gateways may create a bottleneck. Such gateway bottlenecks may result in the access time for one page of data being on the order of 10 seconds or more. Because of the gateway bottlenecks, and because there are many uncertainties along the Internet paths from end user 12 to/from the Web site 16, content delivery networks or systems are now being developed.
Fundamentally, content delivery systems may be designed and deployed for at least two major purposes; one is to achieve load balancing, and the other is to reduce response time. A content delivery system may be implemented using a high speed dedicated line to deliver content while bypassing all gateways or reducing the number of Internet gateways in the transmission path. However, such a dedicated network is expensive and cannot be deployed for all networks. Another approach to implementing content delivery systems is through the use of intelligent caching, mirroring, proxy servers, or other techniques which redirect end users to available servers that contain the desired content and are close to or easily accessible by the end users to ensure fast response time. With some of the traffic redirected, traffic surges will decrease and end users benefit from faster response time. The term generally used for the architecture and functionality of such networks or systems is content delivery services (CDS).
Many approaches and architectures have been proposed for CDS and most of these services, systems, and architectures have focused on static content. For example, CachePortal(trademark) is a system providing CDS, and is described in pending U.S. patent application Ser. No. 09/545,805, entitled xe2x80x9cSystem and Method for Efficient Content Delivery,xe2x80x9d filed Apr. 7, 2000, the contents of which are incorporated herein by reference. CachePortal(trademark) has access to mirror servers which are used as edge cache to provide content to end users with less network delay. CachePortal(trademark) can distribute content among mirror servers as well as remove, refresh, or invalidate the content in the mirror servers. CachePortal(trademark) can also modify the attributes of content in the mirror servers. For example, CachePortal(trademark) may check whether an object has been updated. If CachePortal(trademark) finds that it is not updated, then CachePortal(trademark) may change the value of the refresh time stamp or last modified date time stamp.
However, for many e-business sites, Web pages are created dynamically based on the current state of business processes represented in application servers and databases. The techniques required are more complex than what are needed for static content delivery. Given the fact that based on current technology, the application servers, databases, and Web servers or cache which deliver Web pages are independent components, there has been no efficient mechanism to reflect database content changes in the cached Web pages. As a result, conventional application servers typically specify dynamically generated Web pages to be non-cacheable or expire immediately. By so doing, the processing time for such requests will be the time required for the network round tripxe2x80x94time to receive the current data from the Web servers, and time for the backend systems (i.e. application servers and databases) to perform the computations necessary to provide current data.
FIG. 2 shows an overview of a typical current Web page delivery mechanism 24 for Web sites with backend systems. For example, an e-business site may utilize a database management system (DBMS) 26 to maintain the price, item descriptions, and quantity of all products the e-business site sells through its Web site. It should be understood that a DBMS, as described herein, includes memory such as a database for storing content. As illustrated in FIG. 2, an end user 28 interacts with a Web browser 30 to access the Internet and requests information 32 on a product at the e-business site. Such a request may include parameters such as the product name and model number, and may include other items such as cookies 34.
Cookies are small files that were sent by a particular Web site, and now reside in the end user""s computer. The cookie is used by the Web site to keep track of what the end user is doing, or to identify the user. For example, when an end user clicks on a button at a particular Web site, that Web site may send a cookie to the end user""s computer. This cookie may monitor the activity of the end user as the Web site is navigated. The next time that the user logs onto that Web site, the Web site may search for a cookie in a particular location. If it finds the cookie, it will know that the end user is a repeat customer. The Web site may also use the navigational information from the cookie to customize the Web page for that end user.
Referring again to FIG. 2, the Web page request 32 may be sent from the client browser 30 to a cache 36. In FIG. 2, the cache block 36 is identified with dotted lines to indicate that it may be any one of a number of different types of cache. One type of cache is called edge cache. Edge cache is also called proxy cache and is typically managed and maintained by a third party content delivery service provider such as CachePortal(trademark). Content providers can store content into this edge cache and make it available at locations that are close to the end user. Another type of cache is called reverse cache, which is cache that is owned by entities close to the end user and is typically located close to the end user. Another type of cache is called server side cache, which is cache that is owned by the content provider. Yet another type of cache is called Web server cache. Web server cache may be found in machines that typically would deliver Web server content from disk to the end user. However because disk access is slow, the content from the disk may be copied to another location within that Web server. This location would provide faster access to that content than the disk. These storage locations are known as Web server caches.
Referring again to FIG. 2, if the Web page request 32 is not serviced by the cache 36 because the page is not found in cache 36, or is expired or invalidated in cache 36, the request will be passed to the e-business Web server 38. In some e-business applications, some frequently accessed pages, such as catalog pages, are pre-generated in advance and are put on the Web server 38 in advance. For example, a Web server machine 38 may have a sub-directory called HTTPD. Web pages that are static (do not change frequently) may be stored within that sub-directory. If those pages are requested by the client browser 30 and the HTTPD subdirectory contains an up to date copy of the Web page, those pages will be delivered straight from the Web server 38 back to the client browser 30 without ever going to the application server 40.
However, pages such as product information and availability pages are dynamic in that they change frequently. Such pages are typically not stored in the Web server 38, but are dynamically created by backend systems when such a page is requested, which may include application servers 40, DBMS 26, and xe2x80x9cfilesystem+networkxe2x80x9d or external data sources 42. When a request 44 for a dynamically created Web page is received, the Web server 38 may utilize a sub-directory called CGI (common gateway interface) to convert the request into a new request 46 (which includes the URL and other parameters) that can be understood by the application server 40. The application server 40 receives the Web page request 46 and other parameters from the Web server 38, performs any necessary computations, and accesses the DBMS 26 by way of queries 240, if necessary. The DBMS 26 then returns the information 46 back to the application server 40, where the application server 40 uses this data to put together the dynamically created Web page 48 in HTML.
It should be understood that the application server 40 may be a different machine from the Web server 38, or it may actually be the same machine as the Web server 38, just performing a different function than the Web server 38. More generally, it should be understood that although the figures in this description indicate separate functional blocks for the Web servers 38, application servers 40, API handlers (see subsequent figures), DBMS 26, and content change monitoring components (see subsequent figures), all of these functional elements may be combined in one server or separated into multiple servers. Furthermore, illustrated in FIG. 2 and several other figures in this description is a functional block entitled Filesystem+Network 42. It should be understood that that this block 42 is a generalization of the DBMS block 26, which may include a DBMS and/or any external source of data.
When the program is executed on the application server 40, it may issue one query 240, get the result 46 back, run for an additional period of time, and then issue subsequent queries 240 to get additional information 46 needed to generate the requested Web page 48. For example, in the airline reservation system example, a first query 240 might be issued to determine the available flights on a particular day, and subsequent queries 240 may be issued to determine the prices for those flights. In so doing, different DBMSs 26 or 42 may need to be accessed. Once the application server 40 has put together the dynamically created Web page 48, it sends the Web page indicated at 48 back to the Web server 38. The Web server 38 then sends a forwarded Web page indicated at 50 back to the Web browser 30.
Additionally, when the Web server 38 sends this dynamically generated page 50 to the Web browser 30, it may also store this page 50 to cache 36. With the dynamically generated page 50 in the cache 36, when another user requests the same information, the Web page 50 can be delivered straight from the cache 36 to the end user, without the additional processing time that would be required if the Web page was to be dynamically created by backend systems.
However, dynamically created Web pages may change often, and thus their storage in cache 36 or in the Web server 38 can be problematic for certain e-business Web sites whose businesses rely on presenting the end user with up-to-date information. However, getting the very latest Web page information may be difficult because the cache 36, Web server 38, application server 40 and the DBMS 26 or 42 may all be located in different machines, and they may be independent entities. Furthermore, there may be little or no coordination between these independently operating machines to ensure that the Web pages stored in cache 36 or in a Web server 38 are up-to-date.
One way to increase the probability that the Web pages in the cache 36 are fresh is to periodically refresh the pages through the Web server 38. However, this may result in many unnecessary requests to the Web server 38, the application server 40, and the DBMSs 26, and even with periodic refreshing, the Web pages in cache 36 cannot be guaranteed to be fresh. Because of the difficulty in ensuring that the data stored in cache 36 is fresh, important dynamic Web pages that are stored in cache 36 are typically set to expire immediately. Alternatively, such Web pages may be designated as non-cacheable.
Thus, a typical request for a dynamic Web page will pass through the Web server 38, application server 40, and DBMS 26 or external data source 42, and then eventually the created Web page will be transmitted back to the end user 28. This network round-trip time includes the time for the backend systems (i.e. application servers 40, DBMSs 26, and external data sources 42) to perform the computations necessary to provide the current data. This time can be in the range of 10-20 seconds, which is very slow. Even though some dynamic Web pages may change only once every hour, the fact that it can change may be enough for businesses to make the content non-cacheable or set for expiration immediately. Thus, even if there are numerous requests prior to any data being changed, conventional systems will force those requests to complete the network round trip, including the execution of processes on backend systems.
Therefore, it is an advantage of embodiments of the present invention to provide a system and method for intelligent caching and refreshing of Web content to synchronize the data stored in cache or Web servers with the data stored in DBMSs or external data sources.
It is a further advantage of embodiments of the present invention to provide a system and method for intelligent caching and refreshing of Web content where, when data in a DBMS or external data source changes, the Web pages stored in cache or Web servers that utilize that data will be invalidated.
It is a further advantage of embodiments of the present invention to provide a system and method for intelligent caching and refreshing of Web content where, when data in a DBMS or external data source changes, the Web pages stored in Cache or Web servers that utilize that data will be refreshed. As a result, even the dynamically generated pages can be delivered from front end caches or edge caches.
It is a further advantage of embodiments of the present invention to provide a system and method for intelligent caching and refreshing of Web content where, because many content requests can be served from cache, the load to backend systems can be eased.
These and other advantages are accomplished according to a system for updating Web pages stored in cache or Web servers based on modifications to data stored in a DBMS or external data source. Updating may include invalidating or refreshing the Web pages. The system for updating stored Web pages may be part of a larger system having a DBMS for storing data used to generate Web pages. The DBMS is capable of identifying modified data stored in its database.
The system for updating stored Web pages is comprised of one or more servers programmed for maintaining associations between the stored Web pages and the stored data, and receiving the identity of modified data from the database management system. In addition, the servers are capable of determining, from the identified modified data and the maintained associations, which stored Web pages are associated with the identified modified data. Furthermore, the servers are capable of communicating an update command to the cache that contains the stored Web pages associated with the identified modified data, for the purpose of updating the stored Web pages.
These and other objects, features, and advantages of embodiments of the invention will be apparent to those skilled in the art from the following detailed description of embodiments of the invention, when read with the drawings and appended claims.